package com.animee.health.food_list;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.animee.health.R;
import com.animee.health.bean.FoodBean;

import java.util.List;

// 要添加接口实现点击事件,重写OnClick方法
public class InfoListAdapter extends BaseAdapter {
    // Context是activity的父类可以引用子类的对象,直接传activity
    Context context;
    List<FoodBean> mDatas;

    public InfoListAdapter(Context context, List<FoodBean> mDatas) {
        this.context = context;
        this.mDatas = mDatas;
    }

    // 决定了ListView列表展示的行数
    @Override
    public int getCount() {
        return mDatas.size();
    }

    // 返回指定位置对应的数据
    @Override
    public Object getItem(int position) {
        return mDatas.get(position);
    }

    // 返回指定位置所对应的id
    @Override
    public long getItemId(int position) {
        return position;
    }

    /*
     * 获取在数据集中指定位置显示数据的视图
     *
     * @param position       项目在我们想要查看的项目的适配器数据集中的位置
     * @param convertView    如果可能，要重用的旧视图
     * @param parent         此视图最终将附加到的父级
     * @return        与指定位置的数据对应的视图
     */
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //声明
        ViewHolder holder = null;
        if (convertView == null) {
            // 将布局转化成view对象的方法
            convertView = LayoutInflater.from(context).inflate(R.layout.item_infolist_lv, null); //将布局转换成view对象的方法
            // 三个控件都在上面的布局中,将布局传入viewHolder
            // ViewHolder()可以减少findbyid(查找控件)的次数,
            // 只在第一次的时候findbyid,往后就默认控件已经存在了就不再查找了
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        } else {//不为空时
            // 快捷键 :ctrl+enter 强制类型转换
            holder = (ViewHolder) convertView.getTag();
        }
        // 加载控件显示的内容
        // 获取集合指定位置的数据
        FoodBean foodBean = mDatas.get(position);
        // 实现显示每一个item中应该现实的内容
        holder.titleTv.setText(foodBean.getTitle());
        holder.notTv.setText("不可匹配:" + foodBean.getNotmatch());
        // 本地的图片资源
        holder.iv.setImageResource(foodBean.getPicId());
        return convertView;
    }

    class ViewHolder {
        // 图片初始为iv
        ImageView iv;
        // 一个是标题,一个是不搭配的
        TextView titleTv, notTv;

        // 让这三个控件通过构造函数进行传递
        public ViewHolder(View view) {
            iv = view.findViewById(R.id.item_info_iv);
            titleTv = view.findViewById(R.id.item_info_tv_title);
            notTv = view.findViewById(R.id.item_info_tv_notmatch);
        }
    }
}
